

//int ADD(int x, int y)
//{
//	int tem = 0;
//	tem = x + y;
//	return tem;
//}
//
//int main()
//{
//	int a = 0;
//	int b = 0;
//
//	int c = ADD(a, b);
//
//	return 0;
//}



//void InsertSort(int* a, int n)
//{
//
//	for (int i = 0; i < n - 1; i++)
//	{
//		int end = i;
//		int tem = a[end + 1];
//
//		while (a[end] > tem && end>=0)
//		{
//			a[end + 1] = a[end];
//			end--;
//		}
//		
//		a[end + 1] = tem;
//	}
//
//}

void ShellSort(int* a, int n)
{
	int gap = n;

	while (gap>1)
	{
		gap = gap / 3 + 1;

		for (int i = 0; i < n - gap; i++)
		{
			int end = i;
			int tem = a[end + gap];

			while (a[end] > tem && end >= 0)
			{
				a[end + gap] = a[end];
				end-=gap;
			}

			a[end + gap] = tem;
		}
	}
}

int main()
{
	int arr[] = { 9,8,7};
	int sz = sizeof(arr) / sizeof(int);

	//InsertSort(arr, sz);
	ShellSort(arr, sz);
	return 0;
}
